The SCake SDK is a quick and easy way to set up integrations with Project Sugar Cake for making modules and accessing the API.

(_) How To Install (_)
Simply copy the "Mods" folder into the "Content" folder of your devkit / UE5 environment, then load up your usual project. (The assets are uncooked, so they import directly and can be accessed easily)

(_) Usage Instructions (_)
The SDK provides 'dummy' files/assets you point your mod to, then when you export your mod and load it in-game with Project Sugar Cake also installed, the mod will access the SCake API and trigger the appropriate functions/effects. DO NOT include the SDK files with your mod, this will break SCake and the API, I've set up an asset label that should keep it separated, but double check the chunkID to make sure it doesn't conflict with your mod if you use the packaging method!

When importing the SDK, do not change the file path/structure for the ProjectSugarCake folder! The file path must match exactly in order for the API to work properly (also don't change the DataStructure folder at all). The Data Structure folder is only required if you plan to register animations/events through BP as they are used in the "SCake_Reg..." API calls. Technically, if you don't wish to install the API or have issues with the provided one, you can still create a "dummy actor" in the appropriate folder and re-create the functions/events seen in the SDK to still access the functions properly.


~!~ API Explaination ~!~

	SCake_RegisterAnim
		Call to register an array of animations, invalid data may cause animations not to register
			RegisterAnimData [SCake_RegAnim_Struct]
				Array of animations you'd like to send to the register

	SCake_RegisterAnimEvent
		Call to register an array of animation events, invalid data may cause animation events not to register
			RegisterAnimEventData [SCake_RegAnimEvent_Struct]
				Array of animation events you'd like to send to the register

	SCake_RegisterAllJSON
		(Note : This function runs automatically when the mod loads up so you do not need to call this unless you alter the _LoadList afterward.)
		Registers all .json files in the _LoadList, call when registering new animations through the .json install method.

	SCake_StartAnimEvent_Basic
		Starts an animation with minimal information. If no event ID is supplied (is either "None" or "Random") a random compatible animation will play instead
			PalList [Pal Character Reference]
				List of characters to include in the animation, can include humans or pals (including players)
			EventID [Name]
				[Optional] Animation Event to play, if is invalid or none is supplied a random compatible animation will be selected to play
			NonErotic [Boolean]
				[Optional] If no EventID is supplied, this determines if the random animation selected should be NonErotic (Overwritten by EventID if valid)

	SCake_StartAnimEvent_Advanced
		Starts an animation with more advanced information. If no event ID is supplied (is either "None" or "Random") a random compatible animation will play instead.
			PalList [Pal Character Reference]
				List of characters to include in the animation, can include humans or pals (including players)
			EventID [Name]
				[Optional] Animation Event to play, if is invalid or none is supplied a random compatible animation will be selected to play
			NonErotic [Boolean]
				[Optional] If no EventID is supplied, this determines if the random animation selected should be NonErotic (Overwritten by EventID if valid)
			Tags [Name Array]
				[Optional] Tags to search for when finding animations to play
			RequireAllTags [Boolean]
				[Optional] Whether all tags are required for an animation is compatible, if false then only a single tags is required
			Exclude Tags [Name Array]
				[Optional] Tags that invalidate animations as compatible, excluding them from results
			AnimRootTransform [Transform]
				Location where the animation should play (Can use a character's mesh world transform if desired)

	SCake_StopAnim_PalTarget
		Stops any animation event the selected pal is involved in
			PalReference [Pal Character Reference]

	SCake_SendReportMessage
		Passes a message for SCake to display in the ReportUI
			Message [String]
				Message to display

	SCake_CheckStat_Pleasure
		Returns the current Sexual Pleasure of the referenced character
			PalToCheck [Pal Character Reference]
				Which character to check the Sexual Pleasure of
			Returns: SexualPleasure [Float]
				The Sexual Pleasure of the checked character

	SCake_Stat_AddPleasure
		Adds Sexual Pleasure to the referenced character
				PalReference [Pal Character Reference]
					Character to add Sexual Pleasure to
				AmountToAdd [Float]
					Amount of Sexual Pleasure to add
				Returns : PleasureOutput [Float]
					The new amount of Sexual Pleasure the referenced character